Migration notes 2.0
This page explains the changes required to migrate to the stated version of Atoti Common Library.
Migrate to 2.0.5-AS6.0
Headline announcement
- Parent-Child: The feature now uses configurable depth for the flat store. It relies on the flat store size.
- Switch post-processor: This post-processor uses filters to select an underlying metric. It can also expand levels during the mapper phase.
- New Tenor Converter: A new version of the tenor converter, not based on the calendar, is available.
Parent-Child
The depth of the hierarchies are no longer fixed, they are inferred from the stores size:
Feature | Flat Store | Old default depth | New depth |
---|---|---|---|
Book Hierarchy | BookHierarchy | 15 | Store size - 4 |
Book Hierarchy V2 | BookHierarchy | 15 | Store size - 2 |
Counterparty Hierarchy | CounterpartyHierarchy | 10 | Store size - 2 |
LegalEntity Hierarchy | LegalEntityHierarchy | 5 | Store size - 2 |
Switch post-processor
The underlying measure is now selected by filters instead of locations. The hierarchy levels can be expanded to call the mapper. In this case, an aggregation function must be provided to handle possible collisions.
New Tenor Converter
A new version of the tenor converter is now available. This version has a reduced interface and doesn’t use the calendar.
For more information, see IYearOrDayFractionRetriever
.
Migrate to 2.0.4-AS6.0
Headline announcement
- Tenor Converter / Maturity Converter: When a parsing error occurs, a null value (for object-based return functions) or a NaN value (for double return functions) is returned.
Tenor Converter / Maturity Converter
When a parsing error occurs, a null value (for object based return functions) or a NaN value (for double return functions) is returned. The caller should take action to handle the error case correctly, for instance, by calling the error handler.
Migrate to 2.0.3-AS6.0
Headline announcement
- LocalDate: Removed
LocalDate
support from the Atoti Common Library, as this is handled by Atoti Server. - CommitDatastoreHandler: A continuous query handler that ticks an update after each datastore commit.
LocalDate
The support of LocalDate
is removed from the Atoti Common Library. To access this feature from Atoti Server, just use the LOCALDATE
key.
Migrate to 2.0.2-AS6.0
Headline announcement
- getInCacheOrCompute: The caching tools now support providers with a checked exception signature.
- Migrator: You can now restrict the cubes to be migrated.
- Databricks: The schema and database name are part of the Databricks configuration.
getInCacheOrCompute
The class PostProcessorUtils::NotNullCacheSupplier
and PostProcessorUtils::NullableCacheSupplier
signature has changed to include the ability to throw a checked exception.
This exception also appears on the signature of the functions getInCacheOrCompute*
.
Migrator
Two new functions onlyMigratingCubes
and addCubeToMigrate
have been added to the Migrator
, allowing you to restrict the scope of the migrated star schema depending on the cube name.
Databricks
schema
and database
properties are part of the Databricks properties.
Migrate to 2.0.1-AS6.0
Headline announcement
- Post-processor builders: The fluent post-processor definition has been changed and improved.
- Migrator Vector handling: The handling of vector fields by the DirectQuery migrator is improved for FRTB.
New classes / interfaces
WithAggregationFunction
: interface used to add builder functions that defines the aggregation function of a post-processor.WithAnalysisLevels
: interface used to add builder functions that defines extra levels for the measure expansion on a post-processor.WithConfidenceLevel
: interface used to add builder functions to define a confidence level for metrics like VaR or ES.
Renamed classes / interfaces
Old class name | New class name |
---|---|
BaseFluentCopperPostProcessor | BaseCopperPostProcessorBuilder |
FluentCopperPostProcessorWithAnUnderlying | WithAnUnderlying |
Renamed package
com.activeviam.accelerator.common.postprocessor.fluent
is renamed com.activeviam.accelerator.common.postprocessor.builders
.
Migrator
migrateReference(...)
returns aList<SqlJoin>
.migrateToDirectQueryTable(...)
returns aList<IDataTable>
.Set<SqlJoin> getJoinToVectorTable(...)
returns the extra references needed for the vector tables.- Collection on the signature has changed to a more generic type.
We have added another method to the Migrator because if our Base store contains vectors, we don’t currently have any methods to generate the join from the base store to the vector value store.
We should have all of our Migration methods (for Tables and References) return collections.
This is useful because the user can call just a single method and handle all cases because the resulting migration may result in multiple objects. Below is an example of what should be called:
// Step 1: Migrate Stores and References:
// Migrate Tables:
Set<IDataTable> tables;
Set<SqlJoin> joins;
// This will add a single table, or multiple if table has vectors and DB does not support vectors:
tables.addAll(migrator.migrateTable(storeDescription);
// This will add a single or multiple Joins:
joins.addAll(migrator.migrateJoin(storeReference);
// This only NEEDS to be called if your base store contains a Vector (but this method is safe and will return empty list if no additional join is required). This is because there is no join TO the base store. Normally the migrateJoin() method will create the additional Join needed to the VectorValue store.
joins.addAll(migrator.getJoinToVectorTable(storeDescription);
// Step 2: Update Cube Selection
// When building the IApplication, need to update Cube Selection:
migrator.migrateSelection(activePivotManagerDescription);
Migrate to 2.0.0-AS6.0
Headline announcement
- JAVA 17: This release only works with Java 17 or higher.
- Spring Boot 3: The library is only compatible with Spring Boot 3.
- Documentation: New documentation folder.
- Removal of generic Lambda: As a new policy, the code tries to avoid usage of generic lambda class and instead uses a dedicated class.
- Reorganized packages: Some packages have moved.
- New features: New classes available.
- Renamed methods: Some methods are renamed to be less confusing.
- Spring profiles: Spring profiles
dist-query-node
anddist-data-node
are removed and replaced by spring properties. - Fluent post-processor Setup: It is now possible to create a custom Copper metric (post-processor) in a fluent way.
- Databricks: DirectQuery supports Databricks connection.
Removal of generic Lambda
All the used lambda based on the generic functional interfaces declared on package java.util.function
have now their own specific functional interfaces. This allows a better
tracking and a better documentation across the code. The list of the lambdas are provided there Functional Interfaces.
Package changes
Old package | New package |
---|---|
com.activeviam.accelerator.common.date.impl | com.activeviam.accelerator.common.dates.impl |
com.activeviam.accelerator.common.postprocessor.hierarchy | com.activeviam.accelerator.common.hierarchy |
com.activeviam.accelerator.common.directQuery | com.activeviam.accelerator.common.directquery |
New classes
IMaturityConverterAware
: interface used to auto-injectIMaturityConverter
in Atoti plugins.ReferenceLevelLocationShift
: The post-processor that shifts a metric location to a specified level, moved from FRTB. See Reference Level Location Shift Post-processor.ReferenceLevelLocationShiftLight
: The post-processor that shifts a metric location to a specified level, moved from MR, that have less customization options. See Reference Level Location Shift Post-processor Light.VectorExpandPostProcessor
: A new post-processor to is able to expand a vector along an analysis hierarchy. See Vector Expand Post-processor.NoOpPostProcessor
: A post-processor that does nothing except passing the value of the underlying measure. It can be used to set specific properties to a metric. See A post-processor that doesn’t change the metric.ReferenceLevelContextVal
: The context value used byReferenceLevelLocationShift
andReferenceLevelLocationShiftLight
post-processors to select the reference level.ReferenceLevelVisualTotalsModeContextVal
: The way ofReferenceLevelLocationShift
post-processor will handle the value of the reference level.Databricks*
: All the classes used to connect the Databricks database.BaseFluentCopperPostProcessor
: A base class used to create a fluent builder for post-processors. Described there Fluent post-processor builder.FluentCopperPostProcessorWithAnUnderlying
: A base class used to create a fluent builder for post-processors that defines one single underlying measure. . Described there Fluent post-processor builder.
Renamed class
Old class name | New class name |
---|---|
AUniqueSyncBroadcastMessage | UniqueASyncBroadcastMessage |
Renamed methods
Old name | New name |
---|---|
IDayCountConvention::dayCount | IDayCountConvention::years |